package sismed.fachada;


import java.util.List;

import sismed.exception.DAOException;
import sismed.negocio.modelo.AnalistaSistema;
import sismed.negocio.modelo.Enfermeiro;
import sismed.negocio.modelo.Exame;
import sismed.negocio.modelo.ExameParasitologico;
import sismed.negocio.modelo.Farmaceutico;
import sismed.negocio.modelo.Medico;
import sismed.negocio.modelo.Mensagem;
import sismed.negocio.modelo.Paciente;
import sismed.negocio.modelo.Pessoa;
import sismed.negocio.modelo.ReceitaMedica;

public interface IFachada {
	public void prescreverExameHematologico( Exame exame) throws DAOException;
	public void prescreverExameUrinalise( Exame exame ) throws DAOException;
	public void prescreverExameParasitologico( ExameParasitologico exame ) throws DAOException;
	public void cadastrarPaciente(Paciente paciente);
	public void cadastrarMedico(Medico medico);
	public void cadastrarEnfermeiro(Enfermeiro enfermeiro);
	public void cadastrarFarmaceutico(Farmaceutico farmaceutico);
	public void cadastrarAnalistaSistema(AnalistaSistema analista);
	
	public boolean CadastrarPaciente(String nome, String sexo, String CPF, String RG,
			String naturalidade, String raca, String estadoCivil, String nascimento,
			String profissao, String sangue, String plano, String doador, String endereco,
			String bairro, String municipio, String CEP, String estado, String pais, String login,
			String senha, String email);
	
	public boolean CadastrarMedico(String nome, String sexo, String especialidade, String crm, String CPF, String RG,
			String naturalidade, String raca, String estadoCivil, String nascimento,
			String profissao, String sangue, String plano, String doador, String endereco,
			String bairro, String municipio, String CEP, String estado, String pais, String login,
			String senha, String email);
	
	public boolean CadastrarFarmaceutico(String nome, String sexo, String coren, String CPF, String RG,
			String naturalidade, String raca, String estadoCivil, String nascimento,
			String profissao, String sangue, String plano, String doador, String endereco,
			String bairro, String municipio, String CEP, String estado, String pais, String login,
			String senha, String email);
	
	public boolean CadastrarEnfermeiro(String nome, String sexo, String coren, String CPF, String RG,
			String naturalidade, String raca, String estadoCivil, String nascimento,
			String profissao, String sangue, String plano, String doador, String endereco,
			String bairro, String municipio, String CEP, String estado, String pais, String login,
			String senha, String email);
	
	public boolean EditarPaciente(String id, String nome, String sexo, String CPF, String RG,
			String naturalidade, String raca, String estadoCivil, String nascimento,
			String profissao, String sangue, String plano, String doador, String endereco,
			String bairro, String municipio, String CEP, String estado, String pais, String login,
			String email);
	public boolean EditarMedico(String id, String nome, String sexo, String especialidade, String CRM, String CPF, String RG,
			String naturalidade, String raca, String estadoCivil, String nascimento,
			String profissao, String sangue, String plano, String doador, String endereco,
			String bairro, String municipio, String CEP, String estado, String pais, String login,
			String email);
	public boolean EditarEnfermeiro(String id, String nome, String sexo, String coren, String CPF, String RG,
			String naturalidade, String raca, String estadoCivil, String nascimento,
			String profissao, String sangue, String plano, String doador, String endereco,
			String bairro, String municipio, String CEP, String estado, String pais, String login,
			String email);
	public boolean EditarFarmaceutico(String id, String nome, String sexo, String crf, String CPF, String RG,
			String naturalidade, String raca, String estadoCivil, String nascimento,
			String profissao, String sangue, String plano, String doador, String endereco,
			String bairro, String municipio, String CEP, String estado, String pais, String login,
			String email);
	public boolean EditarAnalista(String id, String nome, String sexo, String coren, String CPF, String RG,
			String naturalidade, String raca, String estadoCivil, String nascimento,
			String profissao, String sangue, String plano, String doador, String endereco,
			String bairro, String municipio, String CEP, String estado, String pais, String login,
			String email);
	public boolean AlterarSenha(String id, String senhaAtual, String senha1);
	
		
	public Pessoa recuperarPessoa(String idPessoa);
	public Pessoa login(String login, String senha);
	public boolean excluirPessoa(String idPessoa);
	
	//Mensagem
	public boolean enviarMensagem(Medico origem, Medico destino,String assunto, Paciente paciente, String conteudo, String data,String hora, String tipo);

	public Mensagem recuperarMensagem(String idMensagem);

	public List<Mensagem> recuperarListaMensagem(String crmMedico);
	
	//ReceitaMedica
	
	public boolean cadastrarReceita(String registro, Paciente paciente, String descricao, String receituario, Medico medico, String data);
	
	public List<ReceitaMedica> recuperarListaReceitaMedica();
	
	public ReceitaMedica recuperarReceitaMedica(int idReceitaMedica);
	
	public List<ReceitaMedica> recuperarListaReceitaMedicaPorMedico(String crmMedico);
	
	public List<ReceitaMedica> recuperarListaReceitaMedicaPorPaciente(String idPaciente);
	
	public Exame recuperarExame( String idExame ) throws DAOException;
	public List<Exame> recuperarExamesPorTipo(String tipo) throws DAOException;
	public List<Exame> recuperarExamesPorPaciente( int idpaciente ) throws DAOException;
	public List<Exame> recuperarExamesPorMedico( int idmedico ) throws DAOException;
	public List<Exame> recuperarExamesPorFarmaceutico( int idfarmaceutico ) throws DAOException;
	public void atualizarExame(Exame exame) throws DAOException;
	
	public List<Pessoa> recuperarListaPessoas();
	public List<Paciente> recuperarListaPacientes();
	public List<Medico> recuperarListaMedicos();
	public List<Enfermeiro> recuperarListaEnfermeiros();
	public List<Farmaceutico> recuperarListaFarmaceuticos();
	public boolean atualizarPessoa( Pessoa pessoa, String id );
	
}